<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>775. 全局倒置与局部倒置</title>
</head>
<body>
    <script>
    //         给你一个长度为 n 的整数数组 nums ，表示由范围 [0, n - 1] 内所有整数组成的一个排列。

    // 全局倒置 的数目等于满足下述条件不同下标对 (i, j) 的数目：

    // 0 <= i < j < n
    // nums[i] > nums[j]
    // 局部倒置 的数目等于满足下述条件的下标 i 的数目：

    // 0 <= i < n - 1
    // nums[i] > nums[i + 1]
    // 当数组 nums 中 全局倒置 的数量等于 局部倒置 的数量时，返回 true ；否则，返回 false 。

    //  

    // 示例 1：

    // 输入：nums = [1,0,2]
    // 输出：true
    // 解释：有 1 个全局倒置，和 1 个局部倒置。
    // 示例 2：

    // 输入：nums = [1,2,0]
    // 输出：false
    // 解释：有 2 个全局倒置，和 1 个局部倒置。
    //  
    // 提示：

    // n == nums.length
    // 1 <= n <= 105
    // 0 <= nums[i] < n
    // nums 中的所有整数 互不相同
    // nums 是范围 [0, n - 1] 内所有数字组成的一个排列

    // 来源：力扣（LeetCode）
    // 链接：https://leetcode.cn/problems/global-and-local-inversions
    // 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

    /**
     * @param {number[]} nums
     * @return {boolean}
     */
    var isIdealPermutation = function(nums) {
        // let allNum = 0, anyNum = 0
        // for (let i = 0; i < nums.length - 1; i++) {
        //     if (nums[i] > nums[i + 1]) {
        //         anyNum++
        //     }
        //     for (let j = i + 1; j < nums.length; j++) {
        //         if (nums[i] > nums[j]) {
        //             allNum++
        //         }
        //     }
        // }
        // if (anyNum === allNum) {
        //     return true
        // }
        // return false
        return A.every((n,index)=>Math.abs(n-index)<=1)
    };
    console.log(isIdealPermutation([1,2,0]));
    </script>
</body>
</html>